import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/**
 *
 * Beschreibung
 *
 * @version 1.0 vom 06.05.2015
 * @author 
 */

public class Fenster extends JFrame {
    // Anfang Attribute
    private ZeichenPanel zeichenflaeche = new ZeichenPanel(null, true,this);

    private JButton ButtonAngreifen = new JButton();
    private JButton ButtonReset = new JButton();
    private JButton ButtonUeberspringen = new JButton();
    
    private JProgressBar Lebensanzeige1 = new JProgressBar();
    private JProgressBar Lebensanzeige2 = new JProgressBar();
    private JProgressBar Lebensanzeige3 = new JProgressBar();
    private JProgressBar Lebensanzeige4 = new JProgressBar();
    private JProgressBar Lebensanzeige5 = new JProgressBar();
    private JProgressBar Lebensanzeige6 = new JProgressBar();
    private JProgressBar Lebensanzeige7 = new JProgressBar();
    private JProgressBar Lebensanzeige8 = new JProgressBar();
    private JProgressBar Lebensanzeige9 = new JProgressBar();
    private JProgressBar Lebensanzeige10 = new JProgressBar();
    private JLabel Anzeige1 = new JLabel();
    private JLabel AktuelleFigur = new JLabel();
    private JPanel Meldung = new JPanel(null, true);

    // Ende Attribute
    BravoView view;
    public Fenster(String title, BravoView v) { 
        // Frame-Initialisierung
        super(title);
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        int frameWidth = 1512; 
        int frameHeight = 1025;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        setResizable(false);
        Container cp = getContentPane();
        cp.setLayout(null);

        this.view = v;

        // Anfang Komponenten

        /***/
        //Zeichenflaeche
        zeichenflaeche.setBounds(0, 0, 1512, 828);
        zeichenflaeche.setOpaque(false);
        cp.add(zeichenflaeche);
        setTitle("ZeichenPanel");

        /***/
        //Button Angreifen
        ButtonAngreifen.setBounds(710, 848, 100, 53);
        ButtonAngreifen.setText("Angreifen");
        ButtonAngreifen.setMargin(new Insets(2, 2, 2, 2));
        ButtonAngreifen.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent evt) { 
                    ButtonAngreifen_ActionPerformed(evt);
                }
            });
        ButtonAngreifen.setBackground(Color.red);
        ButtonAngreifen.setForeground(new Color(0xEEEEEE));
        cp.add(ButtonAngreifen);

        /***/
        //Button Reset
        ButtonReset.setBounds(710, 921, 100, 53);
        ButtonReset.setText("Reset");
        ButtonReset.setMargin(new Insets(2, 2, 2, 2));
        ButtonReset.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent evt) { 
                    ButtonReset_ActionPerformed(evt);
                }
            });

        ButtonReset.setBackground(Color.blue);
        ButtonReset.setForeground(new Color(0xEEEEEE));
        cp.add(ButtonReset);
        
        /***/
        //Button Überspringen
        ButtonUeberspringen.setBounds(895, 885, 100, 53);
        ButtonUeberspringen.setText("Überspringen");
        ButtonUeberspringen.setMargin(new Insets(2, 2, 2, 2));
        ButtonUeberspringen.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent evt) { 
                    ButtonUeberspringen_ActionPerformed(evt);
                }
            });

        ButtonUeberspringen.setBackground(Color.orange);
        ButtonUeberspringen.setForeground(Color.DARK_GRAY);
        cp.add(ButtonUeberspringen);
        
        /***/
        //Lebensanzeige
        Lebensanzeige1.setBounds(24, 840, 142, 16);
        Lebensanzeige1.setBackground(Color.RED);
        Lebensanzeige1.setForeground(Color.GREEN);
        cp.add(Lebensanzeige1);
        Lebensanzeige1.setValue(100);

        Lebensanzeige2.setBounds(24, 870, 142, 16);
        Lebensanzeige2.setBackground(Color.RED);
        Lebensanzeige2.setForeground(Color.GREEN);
        cp.add(Lebensanzeige2);
        Lebensanzeige2.setValue(100);

        Lebensanzeige3.setBounds(24, 900, 142, 16);
        Lebensanzeige3.setBackground(Color.RED);
        Lebensanzeige3.setForeground(Color.GREEN);
        cp.add(Lebensanzeige3);
        Lebensanzeige3.setValue(100);

        Lebensanzeige4.setBounds(24, 930, 142, 16);
        Lebensanzeige4.setBackground(Color.RED);
        Lebensanzeige4.setForeground(Color.GREEN);
        cp.add(Lebensanzeige4);
        Lebensanzeige4.setValue(100);

        Lebensanzeige5.setBounds(24, 960, 142, 16);
        Lebensanzeige5.setBackground(Color.RED);
        Lebensanzeige5.setForeground(Color.GREEN);
        cp.add(Lebensanzeige5);
        Lebensanzeige5.setValue(100);

        Lebensanzeige6.setBounds(1344, 840, 142, 16);
        Lebensanzeige6.setBackground(Color.RED);
        Lebensanzeige6.setForeground(Color.GREEN);
        cp.add(Lebensanzeige6);
        Lebensanzeige6.setValue(100);

        Lebensanzeige7.setBounds(1344, 870, 142, 16);
        Lebensanzeige7.setBackground(Color.RED);
        Lebensanzeige7.setForeground(Color.GREEN);
        cp.add(Lebensanzeige7);
        Lebensanzeige7.setValue(100);

        Lebensanzeige8.setBounds(1344, 900, 142, 16);
        Lebensanzeige8.setBackground(Color.RED);
        Lebensanzeige8.setForeground(Color.GREEN);
        cp.add(Lebensanzeige8);
        Lebensanzeige8.setValue(100);

        Lebensanzeige9.setBounds(1344, 930, 142, 16);
        Lebensanzeige9.setBackground(Color.RED);
        Lebensanzeige9.setForeground(Color.GREEN);
        cp.add(Lebensanzeige9);
        Lebensanzeige9.setValue(100);

        Lebensanzeige10.setBounds(1344, 960, 142, 16);
        Lebensanzeige10.setBackground(Color.RED);
        Lebensanzeige10.setForeground(Color.GREEN);
        cp.add(Lebensanzeige10);
        Lebensanzeige10.setValue(100);

        Anzeige1.setBounds(500, 900, 110, 20);
        Anzeige1.setText("ist am Zug.");
        Anzeige1.setForeground(Color.DARK_GRAY);
        cp.add(Anzeige1);

        Image aktuell = GraphicsHelper.createImage("Material/grau_links.png");
        AktuelleFigur = new JLabel(new ImageIcon(aktuell));
        getContentPane().add(AktuelleFigur);
        getContentPane().repaint();
        AktuelleFigur.setBounds(455, 882, 36, 36);
        //         AktuelleFigur.setOpaque(true);
        AktuelleFigur.repaint();
        cp.add(AktuelleFigur);

        vorbereiten();

        bilderSetzen();
        hintergrundSetzen();

        // Ende Komponenten
        setVisible(true);
    } // end of public ProjektBravoFenster
    // Anfang Methoden
    void vorbereiten() { 
        //Tastaturabfrage hinzufuegen 
        KeyboardConnection key = new KeyboardConnection(this); 
        zeichenflaeche.requestFocus(); 
        //Bilder vorbereiten, incl tile-Breite und tile-Hoehe 
        zeichenflaeche.bilderInitialisieren(36, 36); 
        repaint(); 
    } 

    //     void viewSetzen(BravoView neuerView)
    //     {
    //         this.view = neuerView;
    //     }

    void einheitSetzen(int x, int y, String bildname) { 
        zeichenflaeche.einheitSetzen(x,y,bildname); 
        repaint(); 
    }   

    void objektSetzen(int x, int y, String bildname) { 
        zeichenflaeche.objektSetzen(x,y,bildname); 
        repaint(); 
    }   

    void figurAnzeigeAendern(int spieler){
        ImageIcon aktuell = null;

        if (spieler == 0){
            aktuell = GraphicsHelper.createImageIcon("Material/grau_links.png");
        }
        else if (spieler == 1){
            aktuell = GraphicsHelper.createImageIcon("Material/gelb_links.png");
        }
        else if (spieler == 2) {
            aktuell = GraphicsHelper.createImageIcon("Material/rot_links.png");
        }
        else if (spieler == 3) {
            aktuell = GraphicsHelper.createImageIcon("Material/schwarz_links.png");
        }
        else if (spieler == 4) {
            aktuell = GraphicsHelper.createImageIcon("Material/braun_links.png");
        }
        else if (spieler == 5) {
            aktuell = GraphicsHelper.createImageIcon("Material/grau_rechts.png");
        }
        else if (spieler == 6) {
            aktuell = GraphicsHelper.createImageIcon("Material/gelb_rechts.png");
        }
        else if (spieler == 7) {
            aktuell = GraphicsHelper.createImageIcon("Material/rot_rechts.png");
        }
        else if (spieler == 8) {
            aktuell = GraphicsHelper.createImageIcon("Material/schwarz_rechts.png");
        }
        else if (spieler == 9) {
            aktuell = GraphicsHelper.createImageIcon("Material/braun_rechts.png");
        }

        AktuelleFigur.setIcon(aktuell);

        repaint();
        //         cp.add(aktuell);
        //             FigurAnzeige.setLayout(new FlowLayout()); 
        //             FigurAnzeige.add(testimg);
        //             FigurAnzeige.setVisible(true);
        //FigurAnzeige.repaint();
        System.out.println("Am Zug: "+spieler);

    }

    void hintergrundSetzen()
    {
        Image hintergrundbild = GraphicsHelper.createImage("Material/testit.png");
        JLabel hintergrundLabel = new JLabel(new ImageIcon(hintergrundbild));
        hintergrundLabel.setBounds(-3, 828, 1512, 166);//x,y,width,height
        getContentPane().add(hintergrundLabel);
        getContentPane().repaint();
    }

    void bilderSetzen()
    {
        Image graulinks = GraphicsHelper.createImage("Material/grau_links_kl.png");
        JLabel graulinksLabel = new JLabel(new ImageIcon(graulinks));
        graulinksLabel.setBounds(183, 833, 26, 26);//x,y,width,height
        getContentPane().add(graulinksLabel);
        getContentPane().repaint();

        Image gelblinks = GraphicsHelper.createImage("Material/gelb_links_kl.png");
        JLabel gelblinksLabel = new JLabel(new ImageIcon(gelblinks));
        gelblinksLabel.setBounds(183, 863, 26, 26);//x,y,width,height
        getContentPane().add(gelblinksLabel);
        getContentPane().repaint();

        Image rotlinks = GraphicsHelper.createImage("Material/rot_links_kl.png");
        JLabel rotlinksLabel = new JLabel(new ImageIcon(rotlinks));
        rotlinksLabel.setBounds(183, 893, 26, 26);//x,y,width,height
        getContentPane().add(rotlinksLabel);
        getContentPane().repaint();

        Image schwarzlinks = GraphicsHelper.createImage("Material/schwarz_links_kl.png");
        JLabel schwarzlinksLabel = new JLabel(new ImageIcon(schwarzlinks));
        schwarzlinksLabel.setBounds(183, 923, 26, 26);//x,y,width,height
        getContentPane().add(schwarzlinksLabel);
        getContentPane().repaint();

        Image braunlinks = GraphicsHelper.createImage("Material/braun_links_kl.png");
        JLabel braunlinksLabel = new JLabel(new ImageIcon(braunlinks));
        braunlinksLabel.setBounds(183, 953, 26, 26);//x,y,width,height
        getContentPane().add(braunlinksLabel);
        getContentPane().repaint();

        Image graurechts = GraphicsHelper.createImage("Material/grau_rechts_kl.png");
        JLabel graurechtsLabel = new JLabel(new ImageIcon(graurechts));
        graurechtsLabel.setBounds(1300, 833, 26, 26);//x,y,width,height
        getContentPane().add(graurechtsLabel);
        getContentPane().repaint();

        Image gelbrechts = GraphicsHelper.createImage("Material/gelb_rechts_kl.png");
        JLabel gelbrechtsLabel = new JLabel(new ImageIcon(gelbrechts));
        gelbrechtsLabel.setBounds(1300, 863, 26, 26);//x,y,width,height
        getContentPane().add(gelbrechtsLabel);
        getContentPane().repaint();

        Image rotrechts = GraphicsHelper.createImage("Material/rot_rechts_kl.png");
        JLabel rotrechtsLabel = new JLabel(new ImageIcon(rotrechts));
        rotrechtsLabel.setBounds(1300, 893, 26, 26);//x,y,width,height
        getContentPane().add(rotrechtsLabel);
        getContentPane().repaint();

        Image schwarzrechts = GraphicsHelper.createImage("Material/schwarz_rechts_kl.png");
        JLabel schwarzrechtsLabel = new JLabel(new ImageIcon(schwarzrechts));
        schwarzrechtsLabel.setBounds(1300, 923, 26, 26);//x,y,width,height
        getContentPane().add(schwarzrechtsLabel);
        getContentPane().repaint();

        Image braunrechts = GraphicsHelper.createImage("Material/braun_rechts_kl.png");
        JLabel braunrechtsLabel = new JLabel(new ImageIcon(braunrechts));
        braunrechtsLabel.setBounds(1300, 953, 26, 26);//x,y,width,height
        getContentPane().add(braunrechtsLabel);
        getContentPane().repaint();
    }

    public static void main(String[] args, BravoView v) {
        new Fenster("Fenster",v);
    } // end of main

    public void ButtonAngreifen_ActionPerformed(ActionEvent evt)
    {
        // TODO hier Quelltext einfügen
        System.out.println("ButtonAngreifen");
        ButtonAngreifen.setBackground(Color.green);

        view.controller.buttonGedrueckt(0);
    } // end of jButton1_ActionPerformed

    public void ButtonReset_ActionPerformed(ActionEvent evt) 
    {
        // TODO hier Quelltext einfügen
        System.out.println("ButtonReset");

        view.controller.model.reset();
        view.controller.reset();
    } // end of jButton1_ActionPerformed
    
    public void ButtonUeberspringen_ActionPerformed(ActionEvent evt) 
    {
        // TODO hier Quelltext einfügen
        System.out.println("ButtonÜberspringen");
        
        view.controller.ueberspringen();
    } // end of jButton1_ActionPerformed

    public void gesundheitAendern(int s, int g){
        if (s == 0){
            Lebensanzeige1.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 1){
            Lebensanzeige2.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 2){
            Lebensanzeige3.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 3){
            Lebensanzeige4.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 4){
            Lebensanzeige5.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 5){
            Lebensanzeige6.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 6){
            Lebensanzeige7.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 7){
            Lebensanzeige8.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 8){
            Lebensanzeige9.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        else if (s == 9){
            Lebensanzeige10.setValue(view.controller.model.figurGeben(s).gesundheitGeben());
        }
        repaint();
    }

    public void reset()
    {
        Lebensanzeige10.setValue(100);
        Lebensanzeige1.setValue(100);
        Lebensanzeige2.setValue(100);
        Lebensanzeige3.setValue(100);
        Lebensanzeige4.setValue(100);
        Lebensanzeige5.setValue(100);
        Lebensanzeige6.setValue(100);
        Lebensanzeige7.setValue(100);
        Lebensanzeige8.setValue(100);
        Lebensanzeige9.setValue(100);
        repaint();
    }

    public void angreifenButtonGedrueckt(int i)
    {
        //         boolean angreifen = view.angreifenButtonGedrueckt();
        if(i == 2)
        {
            ButtonAngreifen.setBackground(Color.green);
        }
        else if(i == 1)
        {
            ButtonAngreifen.setBackground(Color.red);
        }
    }


    // Ende Methoden
} // end of class ProjektBravoFenster
